package practice;

import java.util.Arrays;
import java.util.Scanner;

/**
 * 题目：判断一个列表中的每个数的左右两个数之和是否大于当前的数,如果是,就能成环;
 *       如果否,就不能成环
 *
 * 解题思路：对数组进行排序，这样就可以保证前n-1个数满足任意中间的数小于两边数的和；
 *          然后考虑最后一个与第一个连接成环的情形：
 *              因为最后一个数num[n-1]是整个数组的最大值，如果两个数的和大于该数
 *              的话，最有可能的两个数就是第n-1个数和第n-2个数，即num[n-2]和num[n-3],
 *              所以对排序后的数组交换最后两个数的位置，再对整个数组进行遍历判断
 */

public class _数字成环_ {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();
        int[] num = new int[N];
        while (N-- != 0) {
            num[N] = scanner.nextInt();
        }
        System.out.println(judgeCircle(num));
    }

    public static boolean judgeCircle(int[] arr) {
        int len = arr.length;
        Arrays.sort(arr);
        swap(arr,arr.length-1,arr.length-2);
        int flag = 0;
        for (int i = 0; i < len; i++) {
            int left = (i-1+len) % len;
            int right = (i+1) % len;
            if (arr[left] + arr[right] < arr[i]) flag = 1;
        }
        if (flag == 1) return false;
        else return true;
    }

    public static void swap(int[] arr, int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
}
